package com.myapp.entity.proxy.interfaces;

import java.util.List;

import com.myapp.data.define.BaseBean;

public interface IProxy {

	/**
	 * 插入一个entity
	 * 
	 * @param <T>
	 *            数据库操作entity 的类
	 * @param entity
	 *            数据库操作entity
	 * @return 返回操作条数
	 * @throws Exception
	 *             向上抛出错误
	 */
	public <T extends BaseBean> int insert(T entity) throws Exception;

	/**
	 * 更新一个entity
	 * 
	 * @param <T>
	 *            数据库操作entity 的类
	 * @param entity
	 *            数据库操作entity
	 * @return 返回操作条数
	 * @throws Exception
	 *             向上抛出错误
	 */
	public <T extends BaseBean> int update(T entity) throws Exception;

	/**
	 * 删除一个entity
	 * 
	 * @param <T>
	 *            数据库操作entity 的类
	 * @param entity
	 *            数据库操作entity
	 * @return 返回操作条数
	 * @throws Exception
	 *             向上抛出错误
	 */
	public <T extends BaseBean> int delete(T entity) throws Exception;

	/**
	 * 根据id获取一个单条数据
	 * 
	 * @param <T>
	 *            数据库操作entity 的类
	 * @param id
	 *            数据唯一id
	 * @param clazz
	 *            数据库操作entity 的类
	 * @return 一个entity
	 * @throws Exception
	 *             向上抛出错误
	 */
	public <T extends BaseBean> T get(long id, Class<T> clazz) throws Exception;

	/**
	 * 根据用户id此人所以数据
	 * 
	 * @param <T>
	 *            数据库操作entity 的类
	 * @param id
	 *            数据唯一id
	 * @param clazz
	 *            数据库操作entity 的类
	 * @return 一个entity
	 * @throws Exception
	 *             向上抛出错误
	 */
	public <T extends BaseBean> List<T> findAllByUid(long uid, Class<T> clazz)
			throws Exception;
}
